A memory system typically includes a master device, such as a memory controller or graphics controller, and a plurality of integrated circuit memory devices for storing data. An integrated circuit memory device typically includes a plurality of storage cells for storing data, such as pixel information. The plurality of storage cells may be arranged in an array or memory bank. The integrated circuit memory device may include a plurality of memory banks.
Data is written to and read from the integrated circuit memory device in response to one or more commands included in read and/or write transactions between the integrated circuit memory device and the master device. For example, data is generally transferred from memory banks to sense amplifiers in response to an ACTIVATION (ACT) command on a control interconnect. The data may then be transferred from the sense amplifiers thru an integrated circuit memory device interface and onto a data interconnect in response to a READ (RD) command on the control interconnect.
Data stored in the plurality of storage cells is typically transferred to the sense amplifiers one row of storage cells at a time. A row of storage cells is typically referred to as “a page”. A column address is often provided to an integrated circuit memory device by the master device to access data within a selected page. A column address may be included in a request packet or with a command provided by the master device to the integrated circuit memory device.
Memory systems are utilized in different manners depending upon whether the memory system is used for a computational application, such as a general-purpose computer, or graphics application, such as a game console. For example in a graphics application, a large portion of memory requests by a graphics controller, have small transfer sizes of 16 to 32 bytes and little spatial or temporal locality. This is because even though the image itself is large, the polygon fragments that make up the image are small, getting smaller over time, and are stored with little relation to each other. Only a small portion of a page may need to be accessed in rendering a current image in a graphics application. In contrast, computational applications may have 256 byte cache line block transactions. In a computational application, a control interconnect or bus is often shared across multiple integrated circuit memory devices; where a control bus is often dedicated to each integrated circuit memory device in a graphics application. In computational applications, address mapping is typically random across multiple memory banks; while address mapping is generally limited to pages of an integrated circuit memory device in graphics applications. Transaction queues in the master device are reordered to minimize memory bank conflicts in both computational applications and graphics applications, but also reordered to maximize memory bank hits in a graphics application. In a computational application, there are generally a limited number of outstanding read transactions in the transaction queue, for example 10; while there may be hundreds of transactions in a graphics application.
Memory systems in a graphics application have accommodated the need for small transfer granularity by having more transfers (reducing a column cycle time interval tCC.) However, this will cause the cost of the integrated memory circuit device to increase, since the performance of the memory core that contains the interface to the sense amplifiers will likely have to increase as well. In any case, this is an inefficient solution because the size of each transfer remains the same; the unused portion of the data fetched remains the same.